package com.crazyant;

import java.util.ArrayList;

import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Log;

public class Portada {
	
	Resources resources;
	BitmapFactory.Options options;
	float tx;
	float x;
	float vx;
	int id;
	public Portada() {
		GV.Instancies.fondos = new ArrayList<Objecte>();
		options = new BitmapFactory.Options();
		options.inPreferredConfig = Bitmap.Config.ARGB_8888;
		resources = GV.Instancies.mapas.getResources();
		carrega_fondos();
	}
	
	private void carrega_fondos() {
		float txm = GV.Screen.metrics.widthPixels;
		float tym = GV.Screen.metrics.heightPixels;
		GV.Instancies.fondos.add(new Objecte(3, 0, -txm, 0, 0, 0, txm, tym, BitmapFactory.decodeResource(resources, R.drawable.mapas_mundo3, options)));
		GV.Instancies.fondos.add(new Objecte(1, 1, 0, 0, 0, 0, txm, tym, BitmapFactory.decodeResource(resources, R.drawable.mapas_mundo1, options)));
		GV.Instancies.fondos.add(new Objecte(2, 2, txm, 0, 0, 0, txm, tym, BitmapFactory.decodeResource(resources, R.drawable.mapas_mundo2, options)));
	}
	
	public void mov(float movx) {
		for(int i = 0; i < GV.Instancies.fondos.size(); ++i) {
			GV.Instancies.fondos.get(i).x += movx;
		}
	}
	
	public void movex(float movx) {
		x = GV.Instancies.fondos.get(1).x;
		tx = GV.Instancies.fondos.get(1).tx;
		//MOVIMIENTO DERECHA
		if(x+movx > x) { 
			for(int i = 0; i < GV.Instancies.fondos.size(); ++i) {
				GV.Instancies.fondos.get(i).vx = GV.widthpercent(10); 
			}
		}
		else if(x+movx < x) { 
			for(int i = 0; i < GV.Instancies.fondos.size(); ++i) {
				GV.Instancies.fondos.get(i).vx = -GV.widthpercent(10); 
			}
		}
	}
	
	
	public void act() {
			x = GV.Instancies.fondos.get(1).x;
			tx = GV.Instancies.fondos.get(1).tx;
			id = GV.Instancies.fondos.get(1).id;
			vx = GV.Instancies.fondos.get(1).vx;
			Log.d("POSICION X" , "--> "+ x);
			Log.d("WIDTH PIXELS", "--> " + GV.Screen.metrics.widthPixels);
			if(x > GV.Screen.metrics.widthPixels) paradader();
			else if (x+tx < 0) paradaizq();
			else {
				for(int i = 0; i < GV.Instancies.fondos.size(); ++i) GV.Instancies.fondos.get(i).x += vx;
			}
	}
	public void torna(float mov) {
		if(mov < 0) {
			GV.Instancies.fondos.get(0).vx = GV.widthpercent(5);
			GV.Instancies.fondos.get(1).vx = GV.widthpercent(5);
			GV.Instancies.fondos.get(2).vx = GV.widthpercent(5);
		}
		else {
			GV.Instancies.fondos.get(0).vx = -GV.widthpercent(5);
			GV.Instancies.fondos.get(1).vx = -GV.widthpercent(5);
			GV.Instancies.fondos.get(2).vx = -GV.widthpercent(5);
		}
		
	}
	
	
	public void act_torna(float mov) {
		if(mov < 0) {
			GV.Instancies.fondos.get(1).actizq();
			GV.Instancies.fondos.get(0).actizq();
			GV.Instancies.fondos.get(2).actizq();
		}
		
		else {
			GV.Instancies.fondos.get(1).actder();
			GV.Instancies.fondos.get(0).actder();
			GV.Instancies.fondos.get(2).actder();
		}
		
		if(GV.Instancies.fondos.get(1).vx == 0) {
			GV.Instancies.mapasview.mou_enrere = 0;
		}
	}
	
	public void paradader() {
		Log.d("PARADADER" , "llego al limite width");
		tx = GV.Screen.metrics.widthPixels;
		Objecte aux0 = GV.Instancies.fondos.get(0);
		Objecte aux1 = GV.Instancies.fondos.get(1);
		Objecte aux2 = GV.Instancies.fondos.get(2);
		GV.Instancies.fondos.clear();
		GV.Instancies.fondos.add(aux2);
		GV.Instancies.fondos.add(aux0);
		GV.Instancies.fondos.add(aux1);
		GV.Instancies.fondos.get(0).id = 0;
		GV.Instancies.fondos.get(1).id = 1;
		GV.Instancies.fondos.get(2).id = 2;
		GV.Instancies.fondos.get(0).x = -tx;
		GV.Instancies.fondos.get(1).x = 0;
		GV.Instancies.fondos.get(2).x = tx;
		GV.Instancies.fondos.get(0).vx = 0;
		GV.Instancies.fondos.get(1).vx = 0;
		GV.Instancies.fondos.get(2).vx = 0;
		GV.Instancies.mapasview.mou = 0;
	}
	
	public void paradaizq() {
		Log.d("PARADAIZQ" , "llego al limite 0");
		x = GV.Screen.metrics.widthPixels;
		tx = GV.Screen.metrics.widthPixels;
		Objecte aux0 = GV.Instancies.fondos.get(0);
		Objecte aux1 = GV.Instancies.fondos.get(1);
		Objecte aux2 = GV.Instancies.fondos.get(2);
		GV.Instancies.fondos.clear();
		GV.Instancies.fondos.add(aux1);
		GV.Instancies.fondos.add(aux2);
		GV.Instancies.fondos.add(aux0);
		GV.Instancies.fondos.get(0).id = 0;
		GV.Instancies.fondos.get(1).id = 1;
		GV.Instancies.fondos.get(2).id = 2;
		GV.Instancies.fondos.get(0).x = -tx;
		GV.Instancies.fondos.get(1).x = 0;
		GV.Instancies.fondos.get(2).x = tx;
		GV.Instancies.fondos.get(0).vx = 0;
		GV.Instancies.fondos.get(1).vx = 0;
		GV.Instancies.fondos.get(2).vx = 0;
		GV.Instancies.mapasview.mou = 0;
	}
}
